﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class YoumiU3dDemo : MonoBehaviour
{
	AndroidJavaClass mAndroidJavaClass;
	AndroidJavaObject mAndroidJavaObject;
	private float mPoints;

	// 更新积分，这个方法在Android项目中调用
	void UpdatePoints (string points)
	{
		this.mPoints = float.Parse (points);
	}

	void OnGUI ()
	{
		GUI.skin.label.fontSize = 22;
    	GUI.skin.label.margin.bottom = 18;

		// 查询积分，显示已有的积分
    	this.mPoints = mAndroidJavaObject.Call<float> ("queryPoints");

		GUILayout.Label ("Youmi Unity3d Demo");
		GUILayout.Label ("Current Points: " + mPoints);

		GUI.skin.button.fontSize = 22;
        GUI.skin.button.margin.bottom = 18;

		// 调用Android工程提供的api——展示插屏广告
		if (GUILayout.Button ("展示插屏广告", GUILayout.Height (80))) {
			mAndroidJavaObject.Call ("showSpotAd");
		}

		// 调用Android工程提供的api——展示视频广告
		if (GUILayout.Button ("展示视频广告", GUILayout.Height (80))) {
			mAndroidJavaObject.Call ("showVideoAd");
		}

		// 调用Android工程提供的api——展示全屏积分墙
		if (GUILayout.Button ("展示全屏积分墙", GUILayout.Height (80))) {
			mAndroidJavaObject.Call ("showOfferWall");
		}

		// 调用Android工程提供的api——展示对话框积分墙
		if (GUILayout.Button ("展示对话框积分墙", GUILayout.Height (80))) {
			mAndroidJavaObject.Call ("showOfferWallDialog");
		}

		// 调用Android工程提供的api——展查询积分
		if (GUILayout.Button ("查询积分", GUILayout.Height (80))) {
			this.mPoints = mAndroidJavaObject.Call<float> ("queryPoints");
		}

		// 调用Android工程提供的api——奖励10积分
		if (GUILayout.Button ("奖励10积分", GUILayout.Height (80))) {
			mAndroidJavaObject.Call<bool> ("awardPoints", 10f);
		}

		// 调用Android工程提供的api——消耗5积分
		if (GUILayout.Button ("消耗5积分", GUILayout.Height (80))) {
			mAndroidJavaObject.Call<bool> ("spendPoints", 5f);
		}

		if (GUILayout.Button ("退出应用", GUILayout.Height (80))) {
			// 释放资源
			mAndroidJavaObject.Call ("exitApp");
			// 退出应用
			Application.Quit ();
		}
	}

	// Use this for initialization
	void Start ()
	{
		mAndroidJavaClass = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
		mAndroidJavaObject = mAndroidJavaClass.GetStatic<AndroidJavaObject> ("currentActivity");
		mAndroidJavaObject.Call ("showBannerAd");
	}
	
	// Update is called once per frame
	void Update ()
	{
		if (Input.GetKeyDown (KeyCode.Escape)) {
			// 如果开发者使用了插屏广告，那么当按返回键的时候，逻辑应该如下：
			// 1、如果插屏广告在展示时，返回键应该先关闭正在展示的插屏广告，在按一次返回键才执行开发者自己的逻辑（如：退出应用）
			// 2、如果插屏广告没有在展示时，就进行自己的逻辑（如：退出应用等）

			// 当插屏广告已经消失了，就执行后续逻辑（这里为退出应用）
			if (mAndroidJavaObject.Call<bool> ("hideSpotAd") == false) {
				// 释放资源
				mAndroidJavaObject.Call ("exitApp");
				// 退出应用
				Application.Quit ();
			}
		}
		if (Input.GetKeyDown (KeyCode.Home)) {
			// 按Home键时，调用尝试关闭插屏广告的代码，开发者可以实现后续逻辑
			if (mAndroidJavaObject.Call<bool> ("hideSpotAd") == false) {

			}
		}
	}
}
